AppleScript のサンプルコード
書いてみよう
今回はこれまでに学んだことを参考に、実際に動くスクリプトを紹介しようと思います。
アプリ起動
アプリの起動には activate
コマンドを使用します。
activate コマンドはアプリが起動していなければ起動し、起動していればアプリのウィンドウを最前面に表示します。
tell application "Google Chrome" activate end tell
tell application の後には起動したいアプリケーションを指定します。
ここに入る文字列は、スクリプトエディタで「用語説明」を開いた時にウィンドウのヘッダーに表示される文字列です。
(※ソース無し。これで動きました。間違えてたらごめんなさい)
アプリ終了
アプリの終了には quit
コマンドを使用します。
tell application "Google Chrome" quit end tell
フォルダを開く
フォルダを開くには open
コマンドを使用します。
open folder でそのフォルダを開きます。
tell application "Finder" activate open folder "nice_folder" of desktop end tell
この例では、デスクトップにある nice_folder というフォルダを開いています。
また、この例の open folder の行は以下のように書き換えることも可能です。
open folder "Macintosh HD:Users:tanakakeisuke:Desktop:nice_folder"
パスは /
ではなく :
で区切ります。
ウィンドウをすべて閉じる
ウィンドウを閉じるには close
コマンドを使用します。
tell application "Finder" close every window end tell
この例では、現在開いている Finder のウィンドウを全て閉じています。
なかなか便利でした。
キーボード操作
キーボードを操作したように振る舞いたい場合は、keystroke
や key code
コマンドを使用します。
tell application "TextEdit" activate tell application "System Events" keystroke "Hello" end tell end tell
テキストエディットを開き、「Hello」と入力するスクリプトです。
System Events というアプリに対して命令を送っています。
tell application "TextEdit" activate tell application "System Events" key code 49 end tell end tell
スペースキーなど特殊なキーを入力したい場合は key code コマンドを使用します。
スペースキーは数字の 49 に割り当てられています。
key code 一覧はこちら。
また、これらは以下のキーを押しながら、というような指定も可能です。
- コマンドキー
- コントロールキー
- オプションキー
- シフトキー
keystroke "ac" using command down -- コマンドキーを押しながら ac(全選択&コピー)
key code 49 using {control down, shift down} -- コントロールキー、シフトキーを押しながらスペース
応用
以下の処理をスクリプトで実行します。
- デスクトップ 1 で Safari を開く
- デスクトップ 2 で Terminal を開く
- デスクトップ 3 で TextEdit を開き「I have a bad feeling about this.」の文字列を入力する。
デスクトップ n への移動は コントロールキーと数字 n キー
で実行できます。
ショートカットを設定していない場合は、システム環境設定の「キーボード」から設定を有効にしましょう。
controlDown(18) -- control 1 setupSafari() delay 0.2 controlDown(19) -- control 2 setupTerminal() delay 0.2 controlDown(20) -- control 3 setupTextEdit() on controlDown(keycode) tell application "System Events" key code keycode using control down end tell end controlDown on setupSafari() tell application "Safari" activate end tell end setupSafari on setupTerminal() tell application "Terminal" activate end tell end setupTerminal on setupTextEdit() tell application "TextEdit" activate end tell tell application "System Events" keystroke "I have a bad feeling about this." end tell end setupTextEdit
最後の文字入力部分が思ってたより気持ちよかった(笑)
処理が早すぎて画面が遷移できていないので delay
コマンドで処理を遅延させました。
また、各処理をメソッド化しています。
AppleScript ではこれらをメソッドではなく、ハンドラと呼ぶようです。
リンク
ミレニアム・ファルコン製作日記 #13
13 号 表紙
パーツ
成果
今回の作業は以下の 5 つでした。
- 主船倉の床と壁を組み立てる
- ラウンジシートを取り付ける
- 主船倉床に船倉壁を取り付ける
- パイプ架台を取り付ける
- パイプを取り付ける
主船倉の壁は 6 面ありますが、今号ではこの内の 5 面を組み立てました。
作ってみてわかりましたが、この部屋には多くのパイプが存在します。
スター・ウォーズのデザインチームは、それぞれのパイプがどこかにつながっていて、すべてのスイッチが何かを制御しているように見えることの重要性を強調したそうです。
魂を感じますね。
素敵です。
ローグ・ワン/スター・ウォーズ・ストーリー
スター・ウォーズのスピンオフ作品「ローグ・ワン」の特報が公開されました!
2016 年 12 月公開予定。
楽しみだー
それではまた次回。
May the Force be with you!